home *** CD-ROM | disk | FTP | other *** search
/ Tricks of the Mac Game Programming Gurus / TricksOfTheMacGameProgrammingGurus.iso / CodeWarrior Lite / Metrowerks C⁄C++ Lite / Headers / Universal Headers 2.0.1f / Quickdraw.h < prev    next >
Encoding:
C/C++ Source or Header  |  1995-03-22  |  51.7 KB  |  1,402 lines  |  [TEXT/MMCC]

  1. /*
  2.      File:        Quickdraw.h
  3.  
  4.      Contains:    QuickDraw Graphics Interfaces.
  5.  
  6.      Version:    Technology:    System 7.5
  7.                  Package:    Universal Interfaces 2.0 in “MPW Latest” on ETO #17
  8.  
  9.      Copyright:    © 1984-1995 by Apple Computer, Inc.
  10.                  All rights reserved.
  11.  
  12.      Bugs?:        If you find a problem with this file, use the Apple Bug Reporter
  13.                  stack.  Include the file and version information (from above)
  14.                  in the problem description and send to:
  15.                      Internet:    apple.bugs@applelink.apple.com
  16.                      AppleLink:    APPLE.BUGS
  17.  
  18. */
  19.  
  20. #ifndef __QUICKDRAW__
  21. #define __QUICKDRAW__
  22.  
  23.  
  24. #ifndef __TYPES__
  25. #include <Types.h>
  26. #endif
  27. /*    #include <ConditionalMacros.h>                                */
  28.  
  29. #ifndef __MIXEDMODE__
  30. #include <MixedMode.h>
  31. #endif
  32.  
  33. #ifndef __QUICKDRAWTEXT__
  34. #include <QuickdrawText.h>
  35. #endif
  36.  
  37. #ifdef __cplusplus
  38. extern "C" {
  39. #endif
  40.  
  41. #if PRAGMA_ALIGN_SUPPORTED
  42. #pragma options align=mac68k
  43. #endif
  44.  
  45. #if PRAGMA_IMPORT_SUPPORTED
  46. #pragma import on
  47. #endif
  48.  
  49.  
  50. enum {
  51.     invalColReq                    = -1,                            /*invalid color table request*/
  52. /* transfer modes */
  53.     srcCopy                        = 0,                            /*the 16 transfer modes*/
  54.     srcOr                        = 1,
  55.     srcXor                        = 2,
  56.     srcBic                        = 3,
  57.     notSrcCopy                    = 4,
  58.     notSrcOr                    = 5,
  59.     notSrcXor                    = 6,
  60.     notSrcBic                    = 7,
  61.     patCopy                        = 8,
  62.     patOr                        = 9,
  63.     patXor                        = 10,
  64.     patBic                        = 11,
  65.     notPatCopy                    = 12,
  66.     notPatOr                    = 13,
  67.     notPatXor                    = 14,
  68.     notPatBic                    = 15,
  69. /* Special Text Transfer Mode */
  70.     grayishTextOr                = 49,
  71.     hilitetransfermode            = 50,
  72. /* Arithmetic transfer modes */
  73.     blend                        = 32,
  74.     addPin                        = 33
  75. };
  76.  
  77. enum {
  78.     addOver                        = 34,
  79.     subPin                        = 35,
  80.     addMax                        = 37,
  81.     adMax                        = 37,
  82.     subOver                        = 38,
  83.     adMin                        = 39,
  84.     ditherCopy                    = 64,
  85. /* Transparent mode constant */
  86.     transparent                    = 36,
  87.     italicBit                    = 1,
  88.     ulineBit                    = 2,
  89.     outlineBit                    = 3,
  90.     shadowBit                    = 4,
  91.     condenseBit                    = 5,
  92.     extendBit                    = 6,
  93. /* QuickDraw color separation constants */
  94.     normalBit                    = 0,                            /*normal screen mapping*/
  95.     inverseBit                    = 1,                            /*inverse screen mapping*/
  96.     redBit                        = 4,                            /*RGB additive mapping*/
  97.     greenBit                    = 3,
  98.     blueBit                        = 2,
  99.     cyanBit                        = 8,                            /*CMYBk subtractive mapping*/
  100.     magentaBit                    = 7,
  101.     yellowBit                    = 6,
  102.     blackBit                    = 5,
  103.     blackColor                    = 33,                            /*colors expressed in these mappings*/
  104.     whiteColor                    = 30,
  105.     redColor                    = 205
  106. };
  107.  
  108. enum {
  109.     greenColor                    = 341,
  110.     blueColor                    = 409,
  111.     cyanColor                    = 273,
  112.     magentaColor                = 137,
  113.     yellowColor                    = 69,
  114.     picLParen                    = 0,                            /*standard picture comments*/
  115.     picRParen                    = 1,
  116.     clutType                    = 0,                            /*0 if lookup table*/
  117.     fixedType                    = 1,                            /*1 if fixed table*/
  118.     directType                    = 2,                            /*2 if direct values*/
  119.     gdDevType                    = 0                                /*0 = monochrome 1 = color*/
  120. };
  121.  
  122. enum {
  123.     roundedDevice                = 5,                            /* 1 if device has been “rounded” into the GrayRgn */
  124.     hasAuxMenuBar                = 6,                            /* 1 if device has an aux menu bar on it */
  125.     burstDevice                    = 7,
  126.     ext32Device                    = 8,
  127.     ramInit                        = 10,                            /*1 if initialized from 'scrn' resource*/
  128.     mainScreen                    = 11,                            /* 1 if main screen */
  129.     allInit                        = 12,                            /* 1 if all devices initialized */
  130.     screenDevice                = 13,                            /*1 if screen device [not used]*/
  131.     noDriver                    = 14,                            /* 1 if no driver for this GDevice */
  132.     screenActive                = 15,                            /*1 if in use*/
  133.     hiliteBit                    = 7,                            /*flag bit in HiliteMode (lowMem flag)*/
  134.     pHiliteBit                    = 0,                            /*flag bit in HiliteMode used with BitClr procedure*/
  135.     defQDColors                    = 127,                            /*resource ID of clut for default QDColors*/
  136. /* pixel type */
  137.     RGBDirect                    = 16,                            /* 16 & 32 bits/pixel pixelType value */
  138. /* pmVersion values */
  139.     baseAddr32                    = 4                                /*pixmap base address is 32-bit address*/
  140. };
  141.  
  142. enum {
  143.     frame,
  144.     paint,
  145.     erase,
  146.     invert,
  147.     fill
  148. };
  149.  
  150. typedef SInt8 GrafVerb;
  151.  
  152.  
  153. enum {
  154.     chunky,
  155.     chunkyPlanar,
  156.     planar
  157. };
  158.  
  159. typedef SInt8 PixelType;
  160.  
  161. typedef short Bits16[16];
  162.  
  163. /***************   IMPORTANT NOTE REGARDING Pattern  **************************************
  164.    Patterns were originally defined as:
  165.    
  166.         C:             typedef unsigned char Pattern[8];
  167.         Pascal:        Pattern = PACKED ARRAY [0..7] OF 0..255;
  168.         
  169.    The old array defintion of Pattern would cause 68000 based CPU's to crash in certain circum-
  170.    stances. The new struct definition is safe, but may require source code changes to compile.
  171.    Read the details in TechNote "Platforms & Tools" #PT 38.
  172.     
  173. *********************************************************************************************/
  174. struct Pattern {
  175.     UInt8                            pat[8];
  176. };
  177. typedef struct Pattern Pattern;
  178.  
  179. /*
  180.  ConstPatternParam is now longer needed.  It was first created when Pattern was an array.
  181.  Now that Pattern is a struct, it is more straight forward just add the "const" qualifier
  182.  on the parameter type (e.g. "const Pattern * pat" instead of "ConstPatternParam pat").
  183. */
  184. typedef const Pattern *ConstPatternParam;
  185.  
  186. typedef Pattern *PatPtr;
  187.  
  188. typedef PatPtr *PatHandle;
  189.  
  190. typedef SignedByte QDByte, *QDPtr, **QDHandle;
  191.  
  192. typedef short QDErr;
  193.  
  194.  
  195. enum {
  196.     singleDevicesBit            = 0,
  197.     dontMatchSeedsBit            = 1,
  198.     allDevicesBit                = 2
  199. };
  200.  
  201. enum {
  202.     singleDevices                = 1 << singleDevicesBit,
  203.     dontMatchSeeds                = 1 << dontMatchSeedsBit,
  204.     allDevices                    = 1 << allDevicesBit
  205. };
  206.  
  207. typedef unsigned long DeviceLoopFlags;
  208.  
  209. struct BitMap {
  210.     Ptr                                baseAddr;
  211.     short                            rowBytes;
  212.     Rect                            bounds;
  213. };
  214. typedef struct BitMap BitMap;
  215.  
  216. typedef BitMap *BitMapPtr, **BitMapHandle;
  217.  
  218. struct Cursor {
  219.     Bits16                            data;
  220.     Bits16                            mask;
  221.     Point                            hotSpot;
  222. };
  223. typedef struct Cursor Cursor;
  224.  
  225. typedef Cursor *CursPtr, **CursHandle;
  226.  
  227. struct PenState {
  228.     Point                            pnLoc;
  229.     Point                            pnSize;
  230.     short                            pnMode;
  231.     Pattern                            pnPat;
  232. };
  233. typedef struct PenState PenState;
  234.  
  235. struct Region {
  236.     short                            rgnSize;                    /*size in bytes*/
  237.     Rect                            rgnBBox;                    /*enclosing rectangle*/
  238. };
  239. typedef struct Region Region;
  240.  
  241. typedef Region *RgnPtr, **RgnHandle;
  242.  
  243. struct Picture {
  244.     short                            picSize;
  245.     Rect                            picFrame;
  246. };
  247. typedef struct Picture Picture;
  248.  
  249. typedef Picture *PicPtr, **PicHandle;
  250.  
  251. struct Polygon {
  252.     short                            polySize;
  253.     Rect                            polyBBox;
  254.     Point                            polyPoints[1];
  255. };
  256. typedef struct Polygon Polygon;
  257.  
  258. typedef Polygon *PolyPtr, **PolyHandle;
  259.  
  260. typedef pascal void (*QDTextProcPtr)(short byteCount, Ptr textBuf, Point numer, Point denom);
  261. typedef pascal void (*QDLineProcPtr)(Point newPt);
  262. typedef pascal void (*QDRectProcPtr)(GrafVerb verb, Rect *r);
  263. typedef pascal void (*QDRRectProcPtr)(GrafVerb verb, Rect *r, short ovalWidth, short ovalHeight);
  264. typedef pascal void (*QDOvalProcPtr)(GrafVerb verb, Rect *r);
  265. typedef pascal void (*QDArcProcPtr)(GrafVerb verb, Rect *r, short startAngle, short arcAngle);
  266. typedef pascal void (*QDPolyProcPtr)(GrafVerb verb, PolyHandle poly);
  267. typedef pascal void (*QDRgnProcPtr)(GrafVerb verb, RgnHandle rgn);
  268. typedef pascal void (*QDBitsProcPtr)(BitMap *srcBits, Rect *srcRect, Rect *dstRect, short mode, RgnHandle maskRgn);
  269. typedef pascal void (*QDCommentProcPtr)(short kind, short dataSize, Handle dataHandle);
  270. typedef pascal short (*QDTxMeasProcPtr)(short byteCount, Ptr textAddr, Point *numer, Point *denom, FontInfo *info);
  271. typedef pascal void (*QDGetPicProcPtr)(Ptr dataPtr, short byteCount);
  272. typedef pascal void (*QDPutPicProcPtr)(Ptr dataPtr, short byteCount);
  273. typedef pascal void (*QDOpcodeProcPtr)(Rect *fromRect, Rect *toRect, short opcode, short version);
  274. typedef pascal void (*QDJShieldCursorProcPtr)(short left, short top, short right, short bottom);
  275.  
  276. #if GENERATINGCFM
  277. typedef UniversalProcPtr QDTextUPP;
  278. typedef UniversalProcPtr QDLineUPP;
  279. typedef UniversalProcPtr QDRectUPP;
  280. typedef UniversalProcPtr QDRRectUPP;
  281. typedef UniversalProcPtr QDOvalUPP;
  282. typedef UniversalProcPtr QDArcUPP;
  283. typedef UniversalProcPtr QDPolyUPP;
  284. typedef UniversalProcPtr QDRgnUPP;
  285. typedef UniversalProcPtr QDBitsUPP;
  286. typedef UniversalProcPtr QDCommentUPP;
  287. typedef UniversalProcPtr QDTxMeasUPP;
  288. typedef UniversalProcPtr QDGetPicUPP;
  289. typedef UniversalProcPtr QDPutPicUPP;
  290. typedef UniversalProcPtr QDOpcodeUPP;
  291. typedef UniversalProcPtr QDJShieldCursorUPP;
  292. #else
  293. typedef QDTextProcPtr QDTextUPP;
  294. typedef QDLineProcPtr QDLineUPP;
  295. typedef QDRectProcPtr QDRectUPP;
  296. typedef QDRRectProcPtr QDRRectUPP;
  297. typedef QDOvalProcPtr QDOvalUPP;
  298. typedef QDArcProcPtr QDArcUPP;
  299. typedef QDPolyProcPtr QDPolyUPP;
  300. typedef QDRgnProcPtr QDRgnUPP;
  301. typedef QDBitsProcPtr QDBitsUPP;
  302. typedef QDCommentProcPtr QDCommentUPP;
  303. typedef QDTxMeasProcPtr QDTxMeasUPP;
  304. typedef QDGetPicProcPtr QDGetPicUPP;
  305. typedef QDPutPicProcPtr QDPutPicUPP;
  306. typedef QDOpcodeProcPtr QDOpcodeUPP;
  307. typedef QDJShieldCursorProcPtr QDJShieldCursorUPP;
  308. #endif
  309.  
  310. struct QDProcs {
  311.     QDTextUPP                        textProc;
  312.     QDLineUPP                        lineProc;
  313.     QDRectUPP                        rectProc;
  314.     QDRRectUPP                        rRectProc;
  315.     QDOvalUPP                        ovalProc;
  316.     QDArcUPP                        arcProc;
  317.     QDPolyUPP                        polyProc;
  318.     QDRgnUPP                        rgnProc;
  319.     QDBitsUPP                        bitsProc;
  320.     QDCommentUPP                    commentProc;
  321.     QDTxMeasUPP                        txMeasProc;
  322.     QDGetPicUPP                        getPicProc;
  323.     QDPutPicUPP                        putPicProc;
  324. };
  325. typedef struct QDProcs QDProcs;
  326.  
  327. typedef QDProcs *QDProcsPtr;
  328.  
  329. enum {
  330.     uppQDTextProcInfo = kPascalStackBased
  331.          | STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(short)))
  332.          | STACK_ROUTINE_PARAMETER(2, SIZE_CODE(sizeof(Ptr)))
  333.          | STACK_ROUTINE_PARAMETER(3, SIZE_CODE(sizeof(Point)))
  334.          | STACK_ROUTINE_PARAMETER(4, SIZE_CODE(sizeof(Point))),
  335.     uppQDLineProcInfo = kPascalStackBased
  336.          | STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(Point))),
  337.     uppQDRectProcInfo = kPascalStackBased
  338.          | STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(GrafVerb)))
  339.          | STACK_ROUTINE_PARAMETER(2, SIZE_CODE(sizeof(Rect*))),
  340.     uppQDRRectProcInfo = kPascalStackBased
  341.          | STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(GrafVerb)))
  342.          | STACK_ROUTINE_PARAMETER(2, SIZE_CODE(sizeof(Rect*)))
  343.          | STACK_ROUTINE_PARAMETER(3, SIZE_CODE(sizeof(short)))
  344.          | STACK_ROUTINE_PARAMETER(4, SIZE_CODE(sizeof(short))),
  345.     uppQDOvalProcInfo = kPascalStackBased
  346.          | STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(GrafVerb)))
  347.          | STACK_ROUTINE_PARAMETER(2, SIZE_CODE(sizeof(Rect*))),
  348.     uppQDArcProcInfo = kPascalStackBased
  349.          | STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(GrafVerb)))
  350.          | STACK_ROUTINE_PARAMETER(2, SIZE_CODE(sizeof(Rect*)))
  351.          | STACK_ROUTINE_PARAMETER(3, SIZE_CODE(sizeof(short)))
  352.          | STACK_ROUTINE_PARAMETER(4, SIZE_CODE(sizeof(short))),
  353.     uppQDPolyProcInfo = kPascalStackBased
  354.          | STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(GrafVerb)))
  355.          | STACK_ROUTINE_PARAMETER(2, SIZE_CODE(sizeof(PolyHandle))),
  356.     uppQDRgnProcInfo = kPascalStackBased
  357.          | STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(GrafVerb)))
  358.          | STACK_ROUTINE_PARAMETER(2, SIZE_CODE(sizeof(RgnHandle))),
  359.     uppQDBitsProcInfo = kPascalStackBased
  360.          | STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(BitMap*)))
  361.          | STACK_ROUTINE_PARAMETER(2, SIZE_CODE(sizeof(Rect*)))
  362.          | STACK_ROUTINE_PARAMETER(3, SIZE_CODE(sizeof(Rect*)))
  363.          | STACK_ROUTINE_PARAMETER(4, SIZE_CODE(sizeof(short)))
  364.          | STACK_ROUTINE_PARAMETER(5, SIZE_CODE(sizeof(RgnHandle))),
  365.     uppQDCommentProcInfo = kPascalStackBased
  366.          | STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(short)))
  367.          | STACK_ROUTINE_PARAMETER(2, SIZE_CODE(sizeof(short)))
  368.          | STACK_ROUTINE_PARAMETER(3, SIZE_CODE(sizeof(Handle))),
  369.     uppQDTxMeasProcInfo = kPascalStackBased
  370.          | RESULT_SIZE(SIZE_CODE(sizeof(short)))
  371.          | STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(short)))
  372.          | STACK_ROUTINE_PARAMETER(2, SIZE_CODE(sizeof(Ptr)))
  373.          | STACK_ROUTINE_PARAMETER(3, SIZE_CODE(sizeof(Point*)))
  374.          | STACK_ROUTINE_PARAMETER(4, SIZE_CODE(sizeof(Point*)))
  375.          | STACK_ROUTINE_PARAMETER(5, SIZE_CODE(sizeof(FontInfo*))),
  376.     uppQDGetPicProcInfo = kPascalStackBased
  377.          | STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(Ptr)))
  378.          | STACK_ROUTINE_PARAMETER(2, SIZE_CODE(sizeof(short))),
  379.     uppQDPutPicProcInfo = kPascalStackBased
  380.          | STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(Ptr)))
  381.          | STACK_ROUTINE_PARAMETER(2, SIZE_CODE(sizeof(short))),
  382.     uppQDOpcodeProcInfo = kPascalStackBased
  383.          | STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(Rect*)))
  384.          | STACK_ROUTINE_PARAMETER(2, SIZE_CODE(sizeof(Rect*)))
  385.          | STACK_ROUTINE_PARAMETER(3, SIZE_CODE(sizeof(short)))
  386.          | STACK_ROUTINE_PARAMETER(4, SIZE_CODE(sizeof(short))),
  387.     uppQDJShieldCursorProcInfo = kPascalStackBased
  388.          | STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(short)))
  389.          | STACK_ROUTINE_PARAMETER(2, SIZE_CODE(sizeof(short)))
  390.          | STACK_ROUTINE_PARAMETER(3, SIZE_CODE(sizeof(short)))
  391.          | STACK_ROUTINE_PARAMETER(4, SIZE_CODE(sizeof(short)))
  392. };
  393.  
  394. #if GENERATINGCFM
  395. #define NewQDTextProc(userRoutine)        \
  396.         (QDTextUPP) NewRoutineDescriptor((ProcPtr)(userRoutine), uppQDTextProcInfo, GetCurrentArchitecture())
  397. #define NewQDLineProc(userRoutine)        \
  398.         (QDLineUPP) NewRoutineDescriptor((ProcPtr)(userRoutine), uppQDLineProcInfo, GetCurrentArchitecture())
  399. #define NewQDRectProc(userRoutine)        \
  400.         (QDRectUPP) NewRoutineDescriptor((ProcPtr)(userRoutine), uppQDRectProcInfo, GetCurrentArchitecture())
  401. #define NewQDRRectProc(userRoutine)        \
  402.         (QDRRectUPP) NewRoutineDescriptor((ProcPtr)(userRoutine), uppQDRRectProcInfo, GetCurrentArchitecture())
  403. #define NewQDOvalProc(userRoutine)        \
  404.         (QDOvalUPP) NewRoutineDescriptor((ProcPtr)(userRoutine), uppQDOvalProcInfo, GetCurrentArchitecture())
  405. #define NewQDArcProc(userRoutine)        \
  406.         (QDArcUPP) NewRoutineDescriptor((ProcPtr)(userRoutine), uppQDArcProcInfo, GetCurrentArchitecture())
  407. #define NewQDPolyProc(userRoutine)        \
  408.         (QDPolyUPP) NewRoutineDescriptor((ProcPtr)(userRoutine), uppQDPolyProcInfo, GetCurrentArchitecture())
  409. #define NewQDRgnProc(userRoutine)        \
  410.         (QDRgnUPP) NewRoutineDescriptor((ProcPtr)(userRoutine), uppQDRgnProcInfo, GetCurrentArchitecture())
  411. #define NewQDBitsProc(userRoutine)        \
  412.         (QDBitsUPP) NewRoutineDescriptor((ProcPtr)(userRoutine), uppQDBitsProcInfo, GetCurrentArchitecture())
  413. #define NewQDCommentProc(userRoutine)        \
  414.         (QDCommentUPP) NewRoutineDescriptor((ProcPtr)(userRoutine), uppQDCommentProcInfo, GetCurrentArchitecture())
  415. #define NewQDTxMeasProc(userRoutine)        \
  416.         (QDTxMeasUPP) NewRoutineDescriptor((ProcPtr)(userRoutine), uppQDTxMeasProcInfo, GetCurrentArchitecture())
  417. #define NewQDGetPicProc(userRoutine)        \
  418.         (QDGetPicUPP) NewRoutineDescriptor((ProcPtr)(userRoutine), uppQDGetPicProcInfo, GetCurrentArchitecture())
  419. #define NewQDPutPicProc(userRoutine)        \
  420.         (QDPutPicUPP) NewRoutineDescriptor((ProcPtr)(userRoutine), uppQDPutPicProcInfo, GetCurrentArchitecture())
  421. #define NewQDOpcodeProc(userRoutine)        \
  422.         (QDOpcodeUPP) NewRoutineDescriptor((ProcPtr)(userRoutine), uppQDOpcodeProcInfo, GetCurrentArchitecture())
  423. #define NewQDJShieldCursorProc(userRoutine)        \
  424.         (QDJShieldCursorUPP) NewRoutineDescriptor((ProcPtr)(userRoutine), uppQDJShieldCursorProcInfo, GetCurrentArchitecture())
  425. #else
  426. #define NewQDTextProc(userRoutine)        \
  427.         ((QDTextUPP) (userRoutine))
  428. #define NewQDLineProc(userRoutine)        \
  429.         ((QDLineUPP) (userRoutine))
  430. #define NewQDRectProc(userRoutine)        \
  431.         ((QDRectUPP) (userRoutine))
  432. #define NewQDRRectProc(userRoutine)        \
  433.         ((QDRRectUPP) (userRoutine))
  434. #define NewQDOvalProc(userRoutine)        \
  435.         ((QDOvalUPP) (userRoutine))
  436. #define NewQDArcProc(userRoutine)        \
  437.         ((QDArcUPP) (userRoutine))
  438. #define NewQDPolyProc(userRoutine)        \
  439.         ((QDPolyUPP) (userRoutine))
  440. #define NewQDRgnProc(userRoutine)        \
  441.         ((QDRgnUPP) (userRoutine))
  442. #define NewQDBitsProc(userRoutine)        \
  443.         ((QDBitsUPP) (userRoutine))
  444. #define NewQDCommentProc(userRoutine)        \
  445.         ((QDCommentUPP) (userRoutine))
  446. #define NewQDTxMeasProc(userRoutine)        \
  447.         ((QDTxMeasUPP) (userRoutine))
  448. #define NewQDGetPicProc(userRoutine)        \
  449.         ((QDGetPicUPP) (userRoutine))
  450. #define NewQDPutPicProc(userRoutine)        \
  451.         ((QDPutPicUPP) (userRoutine))
  452. #define NewQDOpcodeProc(userRoutine)        \
  453.         ((QDOpcodeUPP) (userRoutine))
  454. #define NewQDJShieldCursorProc(userRoutine)        \
  455.         ((QDJShieldCursorUPP) (userRoutine))
  456. #endif
  457.  
  458. #if GENERATINGCFM
  459. #define CallQDTextProc(userRoutine, byteCount, textBuf, numer, denom)        \
  460.         CallUniversalProc((UniversalProcPtr)(userRoutine), uppQDTextProcInfo, (byteCount), (textBuf), (numer), (denom))
  461. #define CallQDLineProc(userRoutine, newPt)        \
  462.         CallUniversalProc((UniversalProcPtr)(userRoutine), uppQDLineProcInfo, (newPt))
  463. #define CallQDRectProc(userRoutine, verb, r)        \
  464.         CallUniversalProc((UniversalProcPtr)(userRoutine), uppQDRectProcInfo, (verb), (r))
  465. #define CallQDRRectProc(userRoutine, verb, r, ovalWidth, ovalHeight)        \
  466.         CallUniversalProc((UniversalProcPtr)(userRoutine), uppQDRRectProcInfo, (verb), (r), (ovalWidth), (ovalHeight))
  467. #define CallQDOvalProc(userRoutine, verb, r)        \
  468.         CallUniversalProc((UniversalProcPtr)(userRoutine), uppQDOvalProcInfo, (verb), (r))
  469. #define CallQDArcProc(userRoutine, verb, r, startAngle, arcAngle)        \
  470.         CallUniversalProc((UniversalProcPtr)(userRoutine), uppQDArcProcInfo, (verb), (r), (startAngle), (arcAngle))
  471. #define CallQDPolyProc(userRoutine, verb, poly)        \
  472.         CallUniversalProc((UniversalProcPtr)(userRoutine), uppQDPolyProcInfo, (verb), (poly))
  473. #define CallQDRgnProc(userRoutine, verb, rgn)        \
  474.         CallUniversalProc((UniversalProcPtr)(userRoutine), uppQDRgnProcInfo, (verb), (rgn))
  475. #define CallQDBitsProc(userRoutine, srcBits, srcRect, dstRect, mode, maskRgn)        \
  476.         CallUniversalProc((UniversalProcPtr)(userRoutine), uppQDBitsProcInfo, (srcBits), (srcRect), (dstRect), (mode), (maskRgn))
  477. #define CallQDCommentProc(userRoutine, kind, dataSize, dataHandle)        \
  478.         CallUniversalProc((UniversalProcPtr)(userRoutine), uppQDCommentProcInfo, (kind), (dataSize), (dataHandle))
  479. #define CallQDTxMeasProc(userRoutine, byteCount, textAddr, numer, denom, info)        \
  480.         CallUniversalProc((UniversalProcPtr)(userRoutine), uppQDTxMeasProcInfo, (byteCount), (textAddr), (numer), (denom), (info))
  481. #define CallQDGetPicProc(userRoutine, dataPtr, byteCount)        \
  482.         CallUniversalProc((UniversalProcPtr)(userRoutine), uppQDGetPicProcInfo, (dataPtr), (byteCount))
  483. #define CallQDPutPicProc(userRoutine, dataPtr, byteCount)        \
  484.         CallUniversalProc((UniversalProcPtr)(userRoutine), uppQDPutPicProcInfo, (dataPtr), (byteCount))
  485. #define CallQDOpcodeProc(userRoutine, fromRect, toRect, opcode, version)        \
  486.         CallUniversalProc((UniversalProcPtr)(userRoutine), uppQDOpcodeProcInfo, (fromRect), (toRect), (opcode), (version))
  487. #define CallQDJShieldCursorProc(userRoutine, left, top, right, bottom)        \
  488.         CallUniversalProc((UniversalProcPtr)(userRoutine), uppQDJShieldCursorProcInfo, (left), (top), (right), (bottom))
  489. #else
  490. #define CallQDTextProc(userRoutine, byteCount, textBuf, numer, denom)        \
  491.         (*(userRoutine))((byteCount), (textBuf), (numer), (denom))
  492. #define CallQDLineProc(userRoutine, newPt)        \
  493.         (*(userRoutine))((newPt))
  494. #define CallQDRectProc(userRoutine, verb, r)        \
  495.         (*(userRoutine))((verb), (r))
  496. #define CallQDRRectProc(userRoutine, verb, r, ovalWidth, ovalHeight)        \
  497.         (*(userRoutine))((verb), (r), (ovalWidth), (ovalHeight))
  498. #define CallQDOvalProc(userRoutine, verb, r)        \
  499.         (*(userRoutine))((verb), (r))
  500. #define CallQDArcProc(userRoutine, verb, r, startAngle, arcAngle)        \
  501.         (*(userRoutine))((verb), (r), (startAngle), (arcAngle))
  502. #define CallQDPolyProc(userRoutine, verb, poly)        \
  503.         (*(userRoutine))((verb), (poly))
  504. #define CallQDRgnProc(userRoutine, verb, rgn)        \
  505.         (*(userRoutine))((verb), (rgn))
  506. #define CallQDBitsProc(userRoutine, srcBits, srcRect, dstRect, mode, maskRgn)        \
  507.         (*(userRoutine))((srcBits), (srcRect), (dstRect), (mode), (maskRgn))
  508. #define CallQDCommentProc(userRoutine, kind, dataSize, dataHandle)        \
  509.         (*(userRoutine))((kind), (dataSize), (dataHandle))
  510. #define CallQDTxMeasProc(userRoutine, byteCount, textAddr, numer, denom, info)        \
  511.         (*(userRoutine))((byteCount), (textAddr), (numer), (denom), (info))
  512. #define CallQDGetPicProc(userRoutine, dataPtr, byteCount)        \
  513.         (*(userRoutine))((dataPtr), (byteCount))
  514. #define CallQDPutPicProc(userRoutine, dataPtr, byteCount)        \
  515.         (*(userRoutine))((dataPtr), (byteCount))
  516. #define CallQDOpcodeProc(userRoutine, fromRect, toRect, opcode, version)        \
  517.         (*(userRoutine))((fromRect), (toRect), (opcode), (version))
  518. #define CallQDJShieldCursorProc(userRoutine, left, top, right, bottom)        \
  519.         (*(userRoutine))((left), (top), (right), (bottom))
  520. #endif
  521.  
  522. struct GrafPort {
  523.     short                            device;
  524.     BitMap                            portBits;
  525.     Rect                            portRect;
  526.     RgnHandle                        visRgn;
  527.     RgnHandle                        clipRgn;
  528.     Pattern                            bkPat;
  529.     Pattern                            fillPat;
  530.     Point                            pnLoc;
  531.     Point                            pnSize;
  532.     short                            pnMode;
  533.     Pattern                            pnPat;
  534.     short                            pnVis;
  535.     short                            txFont;
  536.     Style                            txFace;                        /*txFace is unpacked byte but push as short*/
  537.     SInt8                            filler;
  538.     short                            txMode;
  539.     short                            txSize;
  540.     Fixed                            spExtra;
  541.     long                            fgColor;
  542.     long                            bkColor;
  543.     short                            colrBit;
  544.     short                            patStretch;
  545.     Handle                            picSave;
  546.     Handle                            rgnSave;
  547.     Handle                            polySave;
  548.     QDProcsPtr                        grafProcs;
  549. };
  550. typedef struct GrafPort GrafPort;
  551.  
  552. typedef GrafPort *GrafPtr;
  553.  
  554. /*
  555.  *    This set of definitions "belongs" in Windows.
  556.  *    But, there is a circularity in the headers where Windows includes Controls and
  557.  *    Controls includes Windows. To break the circle, the information
  558.  *    needed by Controls is moved from Windows to Quickdraw.
  559.  */
  560. typedef GrafPtr WindowPtr;
  561.  
  562. /*
  563.     Set STRICT_WINDOWS to 1 to make sure your code 
  564.     doesn't access the window record directly
  565. */
  566. #ifndef STRICT_WINDOWS
  567. #define STRICT_WINDOWS 0
  568. #endif
  569. #if STRICT_WINDOWS
  570. typedef struct OpaqueWindowRef *WindowRef;
  571.  
  572. #else
  573. typedef WindowPtr WindowRef;
  574.  
  575. #endif
  576. typedef UInt16 DragConstraint;
  577.  
  578.  
  579. enum {
  580.     kNoConstraint                = 0,
  581.     kVerticalConstraint            = 1,
  582.     kHorizontalConstraint        = 2
  583. };
  584.  
  585. /*
  586.  *    Here ends the list of things that "belong" in Windows.
  587.  */
  588. struct RGBColor {
  589.     unsigned short                    red;                        /*magnitude of red component*/
  590.     unsigned short                    green;                        /*magnitude of green component*/
  591.     unsigned short                    blue;                        /*magnitude of blue component*/
  592. };
  593. typedef struct RGBColor RGBColor, *RGBColorPtr, **RGBColorHdl;
  594.  
  595. typedef pascal void (*DragGrayRgnProcPtr)(void);
  596. typedef pascal Boolean (*ColorSearchProcPtr)(RGBColor *rgb, long *position);
  597. typedef pascal Boolean (*ColorComplementProcPtr)(RGBColor *rgb);
  598.  
  599. #if GENERATINGCFM
  600. typedef UniversalProcPtr DragGrayRgnUPP;
  601. typedef UniversalProcPtr ColorSearchUPP;
  602. typedef UniversalProcPtr ColorComplementUPP;
  603. #else
  604. typedef DragGrayRgnProcPtr DragGrayRgnUPP;
  605. typedef ColorSearchProcPtr ColorSearchUPP;
  606. typedef ColorComplementProcPtr ColorComplementUPP;
  607. #endif
  608.  
  609. enum {
  610.     uppDragGrayRgnProcInfo = kPascalStackBased,
  611.     uppColorSearchProcInfo = kPascalStackBased
  612.          | RESULT_SIZE(SIZE_CODE(sizeof(Boolean)))
  613.          | STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(RGBColor*)))
  614.          | STACK_ROUTINE_PARAMETER(2, SIZE_CODE(sizeof(long*))),
  615.     uppColorComplementProcInfo = kPascalStackBased
  616.          | RESULT_SIZE(SIZE_CODE(sizeof(Boolean)))
  617.          | STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(RGBColor*)))
  618. };
  619.  
  620. #if GENERATINGCFM
  621. #define NewDragGrayRgnProc(userRoutine)        \
  622.         (DragGrayRgnUPP) NewRoutineDescriptor((ProcPtr)(userRoutine), uppDragGrayRgnProcInfo, GetCurrentArchitecture())
  623. #define NewColorSearchProc(userRoutine)        \
  624.         (ColorSearchUPP) NewRoutineDescriptor((ProcPtr)(userRoutine), uppColorSearchProcInfo, GetCurrentArchitecture())
  625. #define NewColorComplementProc(userRoutine)        \
  626.         (ColorComplementUPP) NewRoutineDescriptor((ProcPtr)(userRoutine), uppColorComplementProcInfo, GetCurrentArchitecture())
  627. #else
  628. #define NewDragGrayRgnProc(userRoutine)        \
  629.         ((DragGrayRgnUPP) (userRoutine))
  630. #define NewColorSearchProc(userRoutine)        \
  631.         ((ColorSearchUPP) (userRoutine))
  632. #define NewColorComplementProc(userRoutine)        \
  633.         ((ColorComplementUPP) (userRoutine))
  634. #endif
  635.  
  636. #if GENERATINGCFM
  637. #define CallDragGrayRgnProc(userRoutine)        \
  638.         CallUniversalProc((UniversalProcPtr)(userRoutine), uppDragGrayRgnProcInfo)
  639. #define CallColorSearchProc(userRoutine, rgb, position)        \
  640.         CallUniversalProc((UniversalProcPtr)(userRoutine), uppColorSearchProcInfo, (rgb), (position))
  641. #define CallColorComplementProc(userRoutine, rgb)        \
  642.         CallUniversalProc((UniversalProcPtr)(userRoutine), uppColorComplementProcInfo, (rgb))
  643. #else
  644. #define CallDragGrayRgnProc(userRoutine)        \
  645.         (*(userRoutine))()
  646. #define CallColorSearchProc(userRoutine, rgb, position)        \
  647.         (*(userRoutine))((rgb), (position))
  648. #define CallColorComplementProc(userRoutine, rgb)        \
  649.         (*(userRoutine))((rgb))
  650. #endif
  651.  
  652. struct ColorSpec {
  653.     short                            value;                        /*index or other value*/
  654.     RGBColor                        rgb;                        /*true color*/
  655. };
  656. typedef struct ColorSpec ColorSpec;
  657.  
  658. typedef ColorSpec *ColorSpecPtr;
  659.  
  660. typedef ColorSpec CSpecArray[1];
  661.  
  662. struct xColorSpec {
  663.     short                            value;                        /*index or other value*/
  664.     RGBColor                        rgb;                        /*true color*/
  665.     short                            xalpha;
  666. };
  667. typedef struct xColorSpec xColorSpec;
  668.  
  669. typedef xColorSpec *xColorSpecPtr;
  670.  
  671. typedef xColorSpec xCSpecArray[1];
  672.  
  673. struct ColorTable {
  674.     long                            ctSeed;                        /*unique identifier for table*/
  675.     short                            ctFlags;                    /*high bit: 0 = PixMap; 1 = device*/
  676.     short                            ctSize;                        /*number of entries in CTTable*/
  677.     CSpecArray                        ctTable;                    /*array [0..0] of ColorSpec*/
  678. };
  679. typedef struct ColorTable ColorTable, *CTabPtr, **CTabHandle;
  680.  
  681. struct MatchRec {
  682.     unsigned short                    red;
  683.     unsigned short                    green;
  684.     unsigned short                    blue;
  685.     long                            matchData;
  686. };
  687. typedef struct MatchRec MatchRec;
  688.  
  689. struct PixMap {
  690.     Ptr                                baseAddr;                    /*pointer to pixels*/
  691.     short                            rowBytes;                    /*offset to next line*/
  692.     Rect                            bounds;                        /*encloses bitmap*/
  693.     short                            pmVersion;                    /*pixMap version number*/
  694.     short                            packType;                    /*defines packing format*/
  695.     long                            packSize;                    /*length of pixel data*/
  696.     Fixed                            hRes;                        /*horiz. resolution (ppi)*/
  697.     Fixed                            vRes;                        /*vert. resolution (ppi)*/
  698.     short                            pixelType;                    /*defines pixel type*/
  699.     short                            pixelSize;                    /*# bits in pixel*/
  700.     short                            cmpCount;                    /*# components in pixel*/
  701.     short                            cmpSize;                    /*# bits per component*/
  702.     long                            planeBytes;                    /*offset to next plane*/
  703.     CTabHandle                        pmTable;                    /*color map for this pixMap*/
  704.     long                            pmReserved;                    /*for future use. MUST BE 0*/
  705. };
  706. typedef struct PixMap PixMap, *PixMapPtr, **PixMapHandle;
  707.  
  708. struct PixPat {
  709.     short                            patType;                    /*type of pattern*/
  710.     PixMapHandle                    patMap;                        /*the pattern's pixMap*/
  711.     Handle                            patData;                    /*pixmap's data*/
  712.     Handle                            patXData;                    /*expanded Pattern data*/
  713.     short                            patXValid;                    /*flags whether expanded Pattern valid*/
  714.     Handle                            patXMap;                    /*Handle to expanded Pattern data*/
  715.     Pattern                            pat1Data;                    /*old-Style pattern/RGB color*/
  716. };
  717. typedef struct PixPat PixPat, *PixPatPtr, **PixPatHandle;
  718.  
  719. struct CCrsr {
  720.     short                            crsrType;                    /*type of cursor*/
  721.     PixMapHandle                    crsrMap;                    /*the cursor's pixmap*/
  722.     Handle                            crsrData;                    /*cursor's data*/
  723.     Handle                            crsrXData;                    /*expanded cursor data*/
  724.     short                            crsrXValid;                    /*depth of expanded data (0 if none)*/
  725.     Handle                            crsrXHandle;                /*future use*/
  726.     Bits16                            crsr1Data;                    /*one-bit cursor*/
  727.     Bits16                            crsrMask;                    /*cursor's mask*/
  728.     Point                            crsrHotSpot;                /*cursor's hotspot*/
  729.     long                            crsrXTable;                    /*private*/
  730.     long                            crsrID;                        /*private*/
  731. };
  732. typedef struct CCrsr CCrsr, *CCrsrPtr, **CCrsrHandle;
  733.  
  734. #if OLDROUTINELOCATIONS
  735. struct CIcon {
  736.     PixMap                            iconPMap;                    /*the icon's pixMap*/
  737.     BitMap                            iconMask;                    /*the icon's mask*/
  738.     BitMap                            iconBMap;                    /*the icon's bitMap*/
  739.     Handle                            iconData;                    /*the icon's data*/
  740.     short                            iconMaskData[1];            /*icon's mask and BitMap data*/
  741. };
  742. typedef struct CIcon CIcon, *CIconPtr, **CIconHandle;
  743.  
  744. #endif
  745. struct GammaTbl {
  746.     short                            gVersion;                    /*gamma version number*/
  747.     short                            gType;                        /*gamma data type*/
  748.     short                            gFormulaSize;                /*Formula data size*/
  749.     short                            gChanCnt;                    /*number of channels of data*/
  750.     short                            gDataCnt;                    /*number of values/channel*/
  751.     short                            gDataWidth;                    /*bits/corrected value (data packed to next larger byte size)*/
  752.     short                            gFormulaData[1];            /*data for formulas followed by gamma values*/
  753. };
  754. typedef struct GammaTbl GammaTbl, *GammaTblPtr, **GammaTblHandle;
  755.  
  756. struct ITab {
  757.     long                            iTabSeed;                    /*copy of CTSeed from source CTable*/
  758.     short                            iTabRes;                    /*bits/channel resolution of iTable*/
  759.     Byte                            iTTable[1];                    /*byte colortable index values*/
  760. };
  761. typedef struct ITab ITab, *ITabPtr, **ITabHandle;
  762.  
  763. struct SProcRec {
  764.     Handle                            nxtSrch;                    /*SProcHndl Handle to next SProcRec*/
  765.     ColorSearchUPP                    srchProc;                    /*search procedure proc ptr*/
  766. };
  767. typedef struct SProcRec SProcRec, *SProcPtr, **SProcHndl;
  768.  
  769. struct CProcRec {
  770.     Handle                            nxtComp;                    /*CProcHndl Handle to next CProcRec*/
  771.     ColorComplementUPP                compProc;                    /*complement procedure proc ptr*/
  772. };
  773. typedef struct CProcRec CProcRec, *CProcPtr, **CProcHndl;
  774.  
  775. struct GDevice {
  776.     short                            gdRefNum;                    /*driver's unit number*/
  777.     short                            gdID;                        /*client ID for search procs*/
  778.     short                            gdType;                        /*fixed/CLUT/direct*/
  779.     ITabHandle                        gdITable;                    /*Handle to inverse lookup table*/
  780.     short                            gdResPref;                    /*preferred resolution of GDITable*/
  781.     SProcHndl                        gdSearchProc;                /*search proc list head*/
  782.     CProcHndl                        gdCompProc;                    /*complement proc list*/
  783.     short                            gdFlags;                    /*grafDevice flags word*/
  784.     PixMapHandle                    gdPMap;                        /*describing pixMap*/
  785.     long                            gdRefCon;                    /*reference value*/
  786.     Handle                            gdNextGD;                    /*GDHandle Handle of next gDevice*/
  787.     Rect                            gdRect;                        /* device's bounds in global coordinates*/
  788.     long                            gdMode;                        /*device's current mode*/
  789.     short                            gdCCBytes;                    /*depth of expanded cursor data*/
  790.     short                            gdCCDepth;                    /*depth of expanded cursor data*/
  791.     Handle                            gdCCXData;                    /*Handle to cursor's expanded data*/
  792.     Handle                            gdCCXMask;                    /*Handle to cursor's expanded mask*/
  793.     long                            gdReserved;                    /*future use. MUST BE 0*/
  794. };
  795. typedef struct GDevice GDevice, *GDPtr, **GDHandle;
  796.  
  797. struct GrafVars {
  798.     RGBColor                        rgbOpColor;                    /*color for addPin  subPin and average*/
  799.     RGBColor                        rgbHiliteColor;                /*color for hiliting*/
  800.     Handle                            pmFgColor;                    /*palette Handle for foreground color*/
  801.     short                            pmFgIndex;                    /*index value for foreground*/
  802.     Handle                            pmBkColor;                    /*palette Handle for background color*/
  803.     short                            pmBkIndex;                    /*index value for background*/
  804.     short                            pmFlags;                    /*flags for Palette Manager*/
  805. };
  806. typedef struct GrafVars GrafVars, *GVarPtr, **GVarHandle;
  807.  
  808. struct CQDProcs {
  809.     QDTextUPP                        textProc;
  810.     QDLineUPP                        lineProc;
  811.     QDRectUPP                        rectProc;
  812.     QDRRectUPP                        rRectProc;
  813.     QDOvalUPP                        ovalProc;
  814.     QDArcUPP                        arcProc;
  815.     QDPolyUPP                        polyProc;
  816.     QDRgnUPP                        rgnProc;
  817.     QDBitsUPP                        bitsProc;
  818.     QDCommentUPP                    commentProc;
  819.     QDTxMeasUPP                        txMeasProc;
  820.     QDGetPicUPP                        getPicProc;
  821.     QDPutPicUPP                        putPicProc;
  822.     QDOpcodeUPP                        opcodeProc;                    /*fields added to QDProcs*/
  823.     UniversalProcPtr                newProc1;
  824.     UniversalProcPtr                newProc2;
  825.     UniversalProcPtr                newProc3;
  826.     UniversalProcPtr                newProc4;
  827.     UniversalProcPtr                newProc5;
  828.     UniversalProcPtr                newProc6;
  829. };
  830. typedef struct CQDProcs CQDProcs, *CQDProcsPtr;
  831.  
  832. struct CGrafPort {
  833.     short                            device;
  834.     PixMapHandle                    portPixMap;                    /*port's pixel map*/
  835.     short                            portVersion;                /*high 2 bits always set*/
  836.     Handle                            grafVars;                    /*Handle to more fields*/
  837.     short                            chExtra;                    /*character extra*/
  838.     short                            pnLocHFrac;                    /*pen fraction*/
  839.     Rect                            portRect;
  840.     RgnHandle                        visRgn;
  841.     RgnHandle                        clipRgn;
  842.     PixPatHandle                    bkPixPat;                    /*background pattern*/
  843.     RGBColor                        rgbFgColor;                    /*RGB components of fg*/
  844.     RGBColor                        rgbBkColor;                    /*RGB components of bk*/
  845.     Point                            pnLoc;
  846.     Point                            pnSize;
  847.     short                            pnMode;
  848.     PixPatHandle                    pnPixPat;                    /*pen's pattern*/
  849.     PixPatHandle                    fillPixPat;                    /*fill pattern*/
  850.     short                            pnVis;
  851.     short                            txFont;
  852.     Style                            txFace;                        /*txFace is unpacked byte  push as short*/
  853.     SInt8                            filler;
  854.     short                            txMode;
  855.     short                            txSize;
  856.     Fixed                            spExtra;
  857.     long                            fgColor;
  858.     long                            bkColor;
  859.     short                            colrBit;
  860.     short                            patStretch;
  861.     Handle                            picSave;
  862.     Handle                            rgnSave;
  863.     Handle                            polySave;
  864.     CQDProcsPtr                        grafProcs;
  865. };
  866. typedef struct CGrafPort CGrafPort, *CGrafPtr;
  867.  
  868. typedef CGrafPtr CWindowPtr;
  869.  
  870. struct ReqListRec {
  871.     short                            reqLSize;                    /*request list size*/
  872.     short                            reqLData[1];                /*request list data*/
  873. };
  874. typedef struct ReqListRec ReqListRec;
  875.  
  876. struct OpenCPicParams {
  877.     Rect                            srcRect;
  878.     Fixed                            hRes;
  879.     Fixed                            vRes;
  880.     short                            version;
  881.     short                            reserved1;
  882.     long                            reserved2;
  883. };
  884. typedef struct OpenCPicParams OpenCPicParams;
  885.  
  886. struct CursorImageRec {
  887.     UInt16                            majorVersion;
  888.     UInt16                            minorVersion;
  889.     PixMapHandle                    cursorPixMap;
  890.     BitMapHandle                    cursorBitMask;
  891. };
  892. typedef struct CursorImageRec CursorImageRec, *CursorImagePtr;
  893.  
  894. typedef pascal void (*DeviceLoopDrawingProcPtr)(short depth, short deviceFlags, GDHandle targetDevice, long userData);
  895.  
  896. #if GENERATINGCFM
  897. typedef UniversalProcPtr DeviceLoopDrawingUPP;
  898. #else
  899. typedef DeviceLoopDrawingProcPtr DeviceLoopDrawingUPP;
  900. #endif
  901.  
  902. enum {
  903.     uppDeviceLoopDrawingProcInfo = kPascalStackBased
  904.          | STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(short)))
  905.          | STACK_ROUTINE_PARAMETER(2, SIZE_CODE(sizeof(short)))
  906.          | STACK_ROUTINE_PARAMETER(3, SIZE_CODE(sizeof(GDHandle)))
  907.          | STACK_ROUTINE_PARAMETER(4, SIZE_CODE(sizeof(long)))
  908. };
  909.  
  910. #if GENERATINGCFM
  911. #define NewDeviceLoopDrawingProc(userRoutine)        \
  912.         (DeviceLoopDrawingUPP) NewRoutineDescriptor((ProcPtr)(userRoutine), uppDeviceLoopDrawingProcInfo, GetCurrentArchitecture())
  913. #else
  914. #define NewDeviceLoopDrawingProc(userRoutine)        \
  915.         ((DeviceLoopDrawingUPP) (userRoutine))
  916. #endif
  917.  
  918. #if GENERATINGCFM
  919. #define CallDeviceLoopDrawingProc(userRoutine, depth, deviceFlags, targetDevice, userData)        \
  920.         CallUniversalProc((UniversalProcPtr)(userRoutine), uppDeviceLoopDrawingProcInfo, (depth), (deviceFlags), (targetDevice), (userData))
  921. #else
  922. #define CallDeviceLoopDrawingProc(userRoutine, depth, deviceFlags, targetDevice, userData)        \
  923.         (*(userRoutine))((depth), (deviceFlags), (targetDevice), (userData))
  924. #endif
  925.  
  926. struct QDGlobals {
  927.     char                            privates[76];
  928.     long                            randSeed;
  929.     BitMap                            screenBits;
  930.     Cursor                            arrow;
  931.     Pattern                            dkGray;
  932.     Pattern                            ltGray;
  933.     Pattern                            gray;
  934.     Pattern                            black;
  935.     Pattern                            white;
  936.     GrafPtr                            thePort;
  937. };
  938. typedef struct QDGlobals QDGlobals, *QDGlobalsPtr, **QDGlobalsHdl;
  939.  
  940. extern QDGlobals qd;
  941.  
  942. extern pascal void InitGraf(void *globalPtr)
  943.  ONEWORDINLINE(0xA86E);
  944. extern pascal void OpenPort(GrafPtr port)
  945.  ONEWORDINLINE(0xA86F);
  946. extern pascal void InitPort(GrafPtr port)
  947.  ONEWORDINLINE(0xA86D);
  948. extern pascal void ClosePort(GrafPtr port)
  949.  ONEWORDINLINE(0xA87D);
  950. extern pascal void SetPort(GrafPtr port)
  951.  ONEWORDINLINE(0xA873);
  952. extern pascal void GetPort(GrafPtr *port)
  953.  ONEWORDINLINE(0xA874);
  954. extern pascal void GrafDevice(short device)
  955.  ONEWORDINLINE(0xA872);
  956. extern pascal void SetPortBits(const BitMap *bm)
  957.  ONEWORDINLINE(0xA875);
  958. extern pascal void PortSize(short width, short height)
  959.  ONEWORDINLINE(0xA876);
  960. extern pascal void MovePortTo(short leftGlobal, short topGlobal)
  961.  ONEWORDINLINE(0xA877);
  962. extern pascal void SetOrigin(short h, short v)
  963.  ONEWORDINLINE(0xA878);
  964. extern pascal void SetClip(RgnHandle rgn)
  965.  ONEWORDINLINE(0xA879);
  966. extern pascal void GetClip(RgnHandle rgn)
  967.  ONEWORDINLINE(0xA87A);
  968. extern pascal void ClipRect(const Rect *r)
  969.  ONEWORDINLINE(0xA87B);
  970. extern pascal void BackPat(const Pattern *pat)
  971.  ONEWORDINLINE(0xA87C);
  972. extern pascal void InitCursor(void)
  973.  ONEWORDINLINE(0xA850);
  974. extern pascal void SetCursor(const Cursor *crsr)
  975.  ONEWORDINLINE(0xA851);
  976. extern pascal void HideCursor(void)
  977.  ONEWORDINLINE(0xA852);
  978. extern pascal void ShowCursor(void)
  979.  ONEWORDINLINE(0xA853);
  980. extern pascal void ObscureCursor(void)
  981.  ONEWORDINLINE(0xA856);
  982. extern pascal void HidePen(void)
  983.  ONEWORDINLINE(0xA896);
  984. extern pascal void ShowPen(void)
  985.  ONEWORDINLINE(0xA897);
  986. extern pascal void GetPen(Point *pt)
  987.  ONEWORDINLINE(0xA89A);
  988. extern pascal void GetPenState(PenState *pnState)
  989.  ONEWORDINLINE(0xA898);
  990. extern pascal void SetPenState(const PenState *pnState)
  991.  ONEWORDINLINE(0xA899);
  992. extern pascal void PenSize(short width, short height)
  993.  ONEWORDINLINE(0xA89B);
  994. extern pascal void PenMode(short mode)
  995.  ONEWORDINLINE(0xA89C);
  996. extern pascal void PenPat(const Pattern *pat)
  997.  ONEWORDINLINE(0xA89D);
  998. extern pascal void PenNormal(void)
  999.  ONEWORDINLINE(0xA89E);
  1000. extern pascal void MoveTo(short h, short v)
  1001.  ONEWORDINLINE(0xA893);
  1002. extern pascal void Move(short dh, short dv)
  1003.  ONEWORDINLINE(0xA894);
  1004. extern pascal void LineTo(short h, short v)
  1005.  ONEWORDINLINE(0xA891);
  1006. extern pascal void Line(short dh, short dv)
  1007.  ONEWORDINLINE(0xA892);
  1008. extern pascal void ForeColor(long color)
  1009.  ONEWORDINLINE(0xA862);
  1010. extern pascal void BackColor(long color)
  1011.  ONEWORDINLINE(0xA863);
  1012. extern pascal void ColorBit(short whichBit)
  1013.  ONEWORDINLINE(0xA864);
  1014. extern pascal void SetRect(Rect *r, short left, short top, short right, short bottom)
  1015.  ONEWORDINLINE(0xA8A7);
  1016. extern pascal void OffsetRect(Rect *r, short dh, short dv)
  1017.  ONEWORDINLINE(0xA8A8);
  1018. extern pascal void InsetRect(Rect *r, short dh, short dv)
  1019.  ONEWORDINLINE(0xA8A9);
  1020. extern pascal Boolean SectRect(const Rect *src1, const Rect *src2, Rect *dstRect)
  1021.  ONEWORDINLINE(0xA8AA);
  1022. extern pascal void UnionRect(const Rect *src1, const Rect *src2, Rect *dstRect)
  1023.  ONEWORDINLINE(0xA8AB);
  1024. extern pascal Boolean EqualRect(const Rect *rect1, const Rect *rect2)
  1025.  ONEWORDINLINE(0xA8A6);
  1026. extern pascal Boolean EmptyRect(const Rect *r)
  1027.  ONEWORDINLINE(0xA8AE);
  1028. extern pascal void FrameRect(const Rect *r)
  1029.  ONEWORDINLINE(0xA8A1);
  1030. extern pascal void PaintRect(const Rect *r)
  1031.  ONEWORDINLINE(0xA8A2);
  1032. extern pascal void EraseRect(const Rect *r)
  1033.  ONEWORDINLINE(0xA8A3);
  1034. extern pascal void InvertRect(const Rect *r)
  1035.  ONEWORDINLINE(0xA8A4);
  1036. extern pascal void FillRect(const Rect *r, const Pattern *pat)
  1037.  ONEWORDINLINE(0xA8A5);
  1038. extern pascal void FrameOval(const Rect *r)
  1039.  ONEWORDINLINE(0xA8B7);
  1040. extern pascal void PaintOval(const Rect *r)
  1041.  ONEWORDINLINE(0xA8B8);
  1042. extern pascal void EraseOval(const Rect *r)
  1043.  ONEWORDINLINE(0xA8B9);
  1044. extern pascal void InvertOval(const Rect *r)
  1045.  ONEWORDINLINE(0xA8BA);
  1046. extern pascal void FillOval(const Rect *r, const Pattern *pat)
  1047.  ONEWORDINLINE(0xA8BB);
  1048. extern pascal void FrameRoundRect(const Rect *r, short ovalWidth, short ovalHeight)
  1049.  ONEWORDINLINE(0xA8B0);
  1050. extern pascal void PaintRoundRect(const Rect *r, short ovalWidth, short ovalHeight)
  1051.  ONEWORDINLINE(0xA8B1);
  1052. extern pascal void EraseRoundRect(const Rect *r, short ovalWidth, short ovalHeight)
  1053.  ONEWORDINLINE(0xA8B2);
  1054. extern pascal void InvertRoundRect(const Rect *r, short ovalWidth, short ovalHeight)
  1055.  ONEWORDINLINE(0xA8B3);
  1056. extern pascal void FillRoundRect(const Rect *r, short ovalWidth, short ovalHeight, const Pattern *pat)
  1057.  ONEWORDINLINE(0xA8B4);
  1058. extern pascal void FrameArc(const Rect *r, short startAngle, short arcAngle)
  1059.  ONEWORDINLINE(0xA8BE);
  1060. extern pascal void PaintArc(const Rect *r, short startAngle, short arcAngle)
  1061.  ONEWORDINLINE(0xA8BF);
  1062. extern pascal void EraseArc(const Rect *r, short startAngle, short arcAngle)
  1063.  ONEWORDINLINE(0xA8C0);
  1064. extern pascal void InvertArc(const Rect *r, short startAngle, short arcAngle)
  1065.  ONEWORDINLINE(0xA8C1);
  1066. extern pascal void FillArc(const Rect *r, short startAngle, short arcAngle, const Pattern *pat)
  1067.  ONEWORDINLINE(0xA8C2);
  1068. extern pascal RgnHandle NewRgn(void)
  1069.  ONEWORDINLINE(0xA8D8);
  1070. extern pascal void OpenRgn(void)
  1071.  ONEWORDINLINE(0xA8DA);
  1072. extern pascal void CloseRgn(RgnHandle dstRgn)
  1073.  ONEWORDINLINE(0xA8DB);
  1074. #if !SystemSevenOrLater
  1075. extern pascal OSErr BitMapToRegionGlue(RgnHandle region, const BitMap *bMap);
  1076. #endif
  1077. extern pascal OSErr BitMapToRegion(RgnHandle region, const BitMap *bMap)
  1078.  ONEWORDINLINE(0xA8D7);
  1079. extern pascal void DisposeRgn(RgnHandle rgn)
  1080.  ONEWORDINLINE(0xA8D9);
  1081. extern pascal void CopyRgn(RgnHandle srcRgn, RgnHandle dstRgn)
  1082.  ONEWORDINLINE(0xA8DC);
  1083. extern pascal void SetEmptyRgn(RgnHandle rgn)
  1084.  ONEWORDINLINE(0xA8DD);
  1085. extern pascal void SetRectRgn(RgnHandle rgn, short left, short top, short right, short bottom)
  1086.  ONEWORDINLINE(0xA8DE);
  1087. extern pascal void RectRgn(RgnHandle rgn, const Rect *r)
  1088.  ONEWORDINLINE(0xA8DF);
  1089. extern pascal void OffsetRgn(RgnHandle rgn, short dh, short dv)
  1090.  ONEWORDINLINE(0xA8E0);
  1091. extern pascal void InsetRgn(RgnHandle rgn, short dh, short dv)
  1092.  ONEWORDINLINE(0xA8E1);
  1093. extern pascal void SectRgn(RgnHandle srcRgnA, RgnHandle srcRgnB, RgnHandle dstRgn)
  1094.  ONEWORDINLINE(0xA8E4);
  1095. extern pascal void UnionRgn(RgnHandle srcRgnA, RgnHandle srcRgnB, RgnHandle dstRgn)
  1096.  ONEWORDINLINE(0xA8E5);
  1097. extern pascal void DiffRgn(RgnHandle srcRgnA, RgnHandle srcRgnB, RgnHandle dstRgn)
  1098.  ONEWORDINLINE(0xA8E6);
  1099. extern pascal void XorRgn(RgnHandle srcRgnA, RgnHandle srcRgnB, RgnHandle dstRgn)
  1100.  ONEWORDINLINE(0xA8E7);
  1101. extern pascal Boolean RectInRgn(const Rect *r, RgnHandle rgn)
  1102.  ONEWORDINLINE(0xA8E9);
  1103. extern pascal Boolean EqualRgn(RgnHandle rgnA, RgnHandle rgnB)
  1104.  ONEWORDINLINE(0xA8E3);
  1105. extern pascal Boolean EmptyRgn(RgnHandle rgn)
  1106.  ONEWORDINLINE(0xA8E2);
  1107. extern pascal void FrameRgn(RgnHandle rgn)
  1108.  ONEWORDINLINE(0xA8D2);
  1109. extern pascal void PaintRgn(RgnHandle rgn)
  1110.  ONEWORDINLINE(0xA8D3);
  1111. extern pascal void EraseRgn(RgnHandle rgn)
  1112.  ONEWORDINLINE(0xA8D4);
  1113. extern pascal void InvertRgn(RgnHandle rgn)
  1114.  ONEWORDINLINE(0xA8D5);
  1115. extern pascal void FillRgn(RgnHandle rgn, const Pattern *pat)
  1116.  ONEWORDINLINE(0xA8D6);
  1117. extern pascal void ScrollRect(const Rect *r, short dh, short dv, RgnHandle updateRgn)
  1118.  ONEWORDINLINE(0xA8EF);
  1119. extern pascal void CopyBits(const BitMap *srcBits, const BitMap *dstBits, const Rect *srcRect, const Rect *dstRect, short mode, RgnHandle maskRgn)
  1120.  ONEWORDINLINE(0xA8EC);
  1121. extern pascal void SeedFill(const void *srcPtr, void *dstPtr, short srcRow, short dstRow, short height, short words, short seedH, short seedV)
  1122.  ONEWORDINLINE(0xA839);
  1123. extern pascal void CalcMask(const void *srcPtr, void *dstPtr, short srcRow, short dstRow, short height, short words)
  1124.  ONEWORDINLINE(0xA838);
  1125. extern pascal void CopyMask(const BitMap *srcBits, const BitMap *maskBits, const BitMap *dstBits, const Rect *srcRect, const Rect *maskRect, const Rect *dstRect)
  1126.  ONEWORDINLINE(0xA817);
  1127. extern pascal PicHandle OpenPicture(const Rect *picFrame)
  1128.  ONEWORDINLINE(0xA8F3);
  1129. extern pascal void PicComment(short kind, short dataSize, Handle dataHandle)
  1130.  ONEWORDINLINE(0xA8F2);
  1131. extern pascal void ClosePicture(void)
  1132.  ONEWORDINLINE(0xA8F4);
  1133. extern pascal void DrawPicture(PicHandle myPicture, const Rect *dstRect)
  1134.  ONEWORDINLINE(0xA8F6);
  1135. extern pascal void KillPicture(PicHandle myPicture)
  1136.  ONEWORDINLINE(0xA8F5);
  1137. extern pascal PolyHandle OpenPoly(void)
  1138.  ONEWORDINLINE(0xA8CB);
  1139. extern pascal void ClosePoly(void)
  1140.  ONEWORDINLINE(0xA8CC);
  1141. extern pascal void KillPoly(PolyHandle poly)
  1142.  ONEWORDINLINE(0xA8CD);
  1143. extern pascal void OffsetPoly(PolyHandle poly, short dh, short dv)
  1144.  ONEWORDINLINE(0xA8CE);
  1145. extern pascal void FramePoly(PolyHandle poly)
  1146.  ONEWORDINLINE(0xA8C6);
  1147. extern pascal void PaintPoly(PolyHandle poly)
  1148.  ONEWORDINLINE(0xA8C7);
  1149. extern pascal void ErasePoly(PolyHandle poly)
  1150.  ONEWORDINLINE(0xA8C8);
  1151. extern pascal void InvertPoly(PolyHandle poly)
  1152.  ONEWORDINLINE(0xA8C9);
  1153. extern pascal void FillPoly(PolyHandle poly, const Pattern *pat)
  1154.  ONEWORDINLINE(0xA8CA);
  1155. extern pascal void SetPt(Point *pt, short h, short v)
  1156.  ONEWORDINLINE(0xA880);
  1157. extern pascal void LocalToGlobal(Point *pt)
  1158.  ONEWORDINLINE(0xA870);
  1159. extern pascal void GlobalToLocal(Point *pt)
  1160.  ONEWORDINLINE(0xA871);
  1161. extern pascal short Random(void)
  1162.  ONEWORDINLINE(0xA861);
  1163. extern pascal void StuffHex(void *thingPtr, ConstStr255Param s)
  1164.  ONEWORDINLINE(0xA866);
  1165. extern pascal Boolean GetPixel(short h, short v)
  1166.  ONEWORDINLINE(0xA865);
  1167. extern pascal void ScalePt(Point *pt, const Rect *srcRect, const Rect *dstRect)
  1168.  ONEWORDINLINE(0xA8F8);
  1169. extern pascal void MapPt(Point *pt, const Rect *srcRect, const Rect *dstRect)
  1170.  ONEWORDINLINE(0xA8F9);
  1171. extern pascal void MapRect(Rect *r, const Rect *srcRect, const Rect *dstRect)
  1172.  ONEWORDINLINE(0xA8FA);
  1173. extern pascal void MapRgn(RgnHandle rgn, const Rect *srcRect, const Rect *dstRect)
  1174.  ONEWORDINLINE(0xA8FB);
  1175. extern pascal void MapPoly(PolyHandle poly, const Rect *srcRect, const Rect *dstRect)
  1176.  ONEWORDINLINE(0xA8FC);
  1177. extern pascal void SetStdProcs(QDProcs *procs)
  1178.  ONEWORDINLINE(0xA8EA);
  1179. extern pascal void StdRect(GrafVerb verb, const Rect *r)
  1180.  ONEWORDINLINE(0xA8A0);
  1181. extern pascal void StdRRect(GrafVerb verb, const Rect *r, short ovalWidth, short ovalHeight)
  1182.  ONEWORDINLINE(0xA8AF);
  1183. extern pascal void StdOval(GrafVerb verb, const Rect *r)
  1184.  ONEWORDINLINE(0xA8B6);
  1185. extern pascal void StdArc(GrafVerb verb, const Rect *r, short startAngle, short arcAngle)
  1186.  ONEWORDINLINE(0xA8BD);
  1187. extern pascal void StdPoly(GrafVerb verb, PolyHandle poly)
  1188.  ONEWORDINLINE(0xA8C5);
  1189. extern pascal void StdRgn(GrafVerb verb, RgnHandle rgn)
  1190.  ONEWORDINLINE(0xA8D1);
  1191. extern pascal void StdBits(const BitMap *srcBits, const Rect *srcRect, const Rect *dstRect, short mode, RgnHandle maskRgn)
  1192.  ONEWORDINLINE(0xA8EB);
  1193. extern pascal void StdComment(short kind, short dataSize, Handle dataHandle)
  1194.  ONEWORDINLINE(0xA8F1);
  1195. extern pascal void StdGetPic(void *dataPtr, short byteCount)
  1196.  ONEWORDINLINE(0xA8EE);
  1197. extern pascal void StdPutPic(const void *dataPtr, short byteCount)
  1198.  ONEWORDINLINE(0xA8F0);
  1199. extern pascal void AddPt(Point src, Point *dst)
  1200.  ONEWORDINLINE(0xA87E);
  1201. extern pascal Boolean EqualPt(Point pt1, Point pt2)
  1202.  ONEWORDINLINE(0xA881);
  1203. extern pascal Boolean PtInRect(Point pt, const Rect *r)
  1204.  ONEWORDINLINE(0xA8AD);
  1205. extern pascal void Pt2Rect(Point pt1, Point pt2, Rect *dstRect)
  1206.  ONEWORDINLINE(0xA8AC);
  1207. extern pascal void PtToAngle(const Rect *r, Point pt, short *angle)
  1208.  ONEWORDINLINE(0xA8C3);
  1209. extern pascal void SubPt(Point src, Point *dst)
  1210.  ONEWORDINLINE(0xA87F);
  1211. extern pascal Boolean PtInRgn(Point pt, RgnHandle rgn)
  1212.  ONEWORDINLINE(0xA8E8);
  1213. extern pascal void StdLine(Point newPt)
  1214.  ONEWORDINLINE(0xA890);
  1215. extern pascal void OpenCPort(CGrafPtr port)
  1216.  ONEWORDINLINE(0xAA00);
  1217. extern pascal void InitCPort(CGrafPtr port)
  1218.  ONEWORDINLINE(0xAA01);
  1219. extern pascal void CloseCPort(CGrafPtr port)
  1220.  ONEWORDINLINE(0xA87D);
  1221. extern pascal PixMapHandle NewPixMap(void)
  1222.  ONEWORDINLINE(0xAA03);
  1223. extern pascal void DisposePixMap(PixMapHandle pm)
  1224.  ONEWORDINLINE(0xAA04);
  1225. extern pascal void CopyPixMap(PixMapHandle srcPM, PixMapHandle dstPM)
  1226.  ONEWORDINLINE(0xAA05);
  1227. extern pascal PixPatHandle NewPixPat(void)
  1228.  ONEWORDINLINE(0xAA07);
  1229. extern pascal void DisposePixPat(PixPatHandle pp)
  1230.  ONEWORDINLINE(0xAA08);
  1231. extern pascal void CopyPixPat(PixPatHandle srcPP, PixPatHandle dstPP)
  1232.  ONEWORDINLINE(0xAA09);
  1233. extern pascal void PenPixPat(PixPatHandle pp)
  1234.  ONEWORDINLINE(0xAA0A);
  1235. extern pascal void BackPixPat(PixPatHandle pp)
  1236.  ONEWORDINLINE(0xAA0B);
  1237. extern pascal PixPatHandle GetPixPat(short patID)
  1238.  ONEWORDINLINE(0xAA0C);
  1239. extern pascal void MakeRGBPat(PixPatHandle pp, const RGBColor *myColor)
  1240.  ONEWORDINLINE(0xAA0D);
  1241. extern pascal void FillCRect(const Rect *r, PixPatHandle pp)
  1242.  ONEWORDINLINE(0xAA0E);
  1243. extern pascal void FillCOval(const Rect *r, PixPatHandle pp)
  1244.  ONEWORDINLINE(0xAA0F);
  1245. extern pascal void FillCRoundRect(const Rect *r, short ovalWidth, short ovalHeight, PixPatHandle pp)
  1246.  ONEWORDINLINE(0xAA10);
  1247. extern pascal void FillCArc(const Rect *r, short startAngle, short arcAngle, PixPatHandle pp)
  1248.  ONEWORDINLINE(0xAA11);
  1249. extern pascal void FillCRgn(RgnHandle rgn, PixPatHandle pp)
  1250.  ONEWORDINLINE(0xAA12);
  1251. extern pascal void FillCPoly(PolyHandle poly, PixPatHandle pp)
  1252.  ONEWORDINLINE(0xAA13);
  1253. extern pascal void RGBForeColor(const RGBColor *color)
  1254.  ONEWORDINLINE(0xAA14);
  1255. extern pascal void RGBBackColor(const RGBColor *color)
  1256.  ONEWORDINLINE(0xAA15);
  1257. extern pascal void SetCPixel(short h, short v, const RGBColor *cPix)
  1258.  ONEWORDINLINE(0xAA16);
  1259. extern pascal void SetPortPix(PixMapHandle pm)
  1260.  ONEWORDINLINE(0xAA06);
  1261. extern pascal void GetCPixel(short h, short v, RGBColor *cPix)
  1262.  ONEWORDINLINE(0xAA17);
  1263. extern pascal void GetForeColor(RGBColor *color)
  1264.  ONEWORDINLINE(0xAA19);
  1265. extern pascal void GetBackColor(RGBColor *color)
  1266.  ONEWORDINLINE(0xAA1A);
  1267. extern pascal void SeedCFill(const BitMap *srcBits, const BitMap *dstBits, const Rect *srcRect, const Rect *dstRect, short seedH, short seedV, ColorSearchUPP matchProc, long matchData)
  1268.  ONEWORDINLINE(0xAA50);
  1269. extern pascal void CalcCMask(const BitMap *srcBits, const BitMap *dstBits, const Rect *srcRect, const Rect *dstRect, const RGBColor *seedRGB, ColorSearchUPP matchProc, long matchData)
  1270.  ONEWORDINLINE(0xAA4F);
  1271. extern pascal PicHandle OpenCPicture(const OpenCPicParams *newHeader)
  1272.  ONEWORDINLINE(0xAA20);
  1273. extern pascal void OpColor(const RGBColor *color)
  1274.  ONEWORDINLINE(0xAA21);
  1275. extern pascal void HiliteColor(const RGBColor *color)
  1276.  ONEWORDINLINE(0xAA22);
  1277. extern pascal void DisposeCTable(CTabHandle cTable)
  1278.  ONEWORDINLINE(0xAA24);
  1279. extern pascal CTabHandle GetCTable(short ctID)
  1280.  ONEWORDINLINE(0xAA18);
  1281. extern pascal CCrsrHandle GetCCursor(short crsrID)
  1282.  ONEWORDINLINE(0xAA1B);
  1283. extern pascal void SetCCursor(CCrsrHandle cCrsr)
  1284.  ONEWORDINLINE(0xAA1C);
  1285. extern pascal void AllocCursor(void)
  1286.  ONEWORDINLINE(0xAA1D);
  1287. extern pascal void DisposeCCursor(CCrsrHandle cCrsr)
  1288.  ONEWORDINLINE(0xAA26);
  1289. #if OLDROUTINELOCATIONS
  1290. extern pascal CIconHandle GetCIcon(short iconID)
  1291.  ONEWORDINLINE(0xAA1E);
  1292. extern pascal void PlotCIcon(const Rect *theRect, CIconHandle theIcon)
  1293.  ONEWORDINLINE(0xAA1F);
  1294. extern pascal void DisposeCIcon(CIconHandle theIcon)
  1295.  ONEWORDINLINE(0xAA25);
  1296. #endif
  1297. extern pascal void SetStdCProcs(CQDProcs *procs)
  1298.  ONEWORDINLINE(0xAA4E);
  1299. extern pascal GDHandle GetMaxDevice(const Rect *globalRect)
  1300.  ONEWORDINLINE(0xAA27);
  1301. extern pascal long GetCTSeed(void)
  1302.  ONEWORDINLINE(0xAA28);
  1303. extern pascal GDHandle GetDeviceList(void)
  1304.  ONEWORDINLINE(0xAA29);
  1305. extern pascal GDHandle GetMainDevice(void)
  1306.  ONEWORDINLINE(0xAA2A);
  1307. extern pascal GDHandle GetNextDevice(GDHandle curDevice)
  1308.  ONEWORDINLINE(0xAA2B);
  1309. extern pascal Boolean TestDeviceAttribute(GDHandle gdh, short attribute)
  1310.  ONEWORDINLINE(0xAA2C);
  1311. extern pascal void SetDeviceAttribute(GDHandle gdh, short attribute, Boolean value)
  1312.  ONEWORDINLINE(0xAA2D);
  1313. extern pascal void InitGDevice(short qdRefNum, long mode, GDHandle gdh)
  1314.  ONEWORDINLINE(0xAA2E);
  1315. extern pascal GDHandle NewGDevice(short refNum, long mode)
  1316.  ONEWORDINLINE(0xAA2F);
  1317. extern pascal void DisposeGDevice(GDHandle gdh)
  1318.  ONEWORDINLINE(0xAA30);
  1319. extern pascal void SetGDevice(GDHandle gd)
  1320.  ONEWORDINLINE(0xAA31);
  1321. extern pascal GDHandle GetGDevice(void)
  1322.  ONEWORDINLINE(0xAA32);
  1323. extern pascal long Color2Index(const RGBColor *myColor)
  1324.  ONEWORDINLINE(0xAA33);
  1325. extern pascal void Index2Color(long index, RGBColor *aColor)
  1326.  ONEWORDINLINE(0xAA34);
  1327. extern pascal void InvertColor(RGBColor *myColor)
  1328.  ONEWORDINLINE(0xAA35);
  1329. extern pascal Boolean RealColor(const RGBColor *color)
  1330.  ONEWORDINLINE(0xAA36);
  1331. extern pascal void GetSubTable(CTabHandle myColors, short iTabRes, CTabHandle targetTbl)
  1332.  ONEWORDINLINE(0xAA37);
  1333. extern pascal void MakeITable(CTabHandle cTabH, ITabHandle iTabH, short res)
  1334.  ONEWORDINLINE(0xAA39);
  1335. extern pascal void AddSearch(ColorSearchUPP searchProc)
  1336.  ONEWORDINLINE(0xAA3A);
  1337. extern pascal void AddComp(ColorComplementUPP compProc)
  1338.  ONEWORDINLINE(0xAA3B);
  1339. extern pascal void DelSearch(ColorSearchUPP searchProc)
  1340.  ONEWORDINLINE(0xAA4C);
  1341. extern pascal void DelComp(ColorComplementUPP compProc)
  1342.  ONEWORDINLINE(0xAA4D);
  1343. extern pascal void SetClientID(short id)
  1344.  ONEWORDINLINE(0xAA3C);
  1345. extern pascal void ProtectEntry(short index, Boolean protect)
  1346.  ONEWORDINLINE(0xAA3D);
  1347. extern pascal void ReserveEntry(short index, Boolean reserve)
  1348.  ONEWORDINLINE(0xAA3E);
  1349. extern pascal void SetEntries(short start, short count, CSpecArray aTable)
  1350.  ONEWORDINLINE(0xAA3F);
  1351. extern pascal void SaveEntries(CTabHandle srcTable, CTabHandle resultTable, ReqListRec *selection)
  1352.  ONEWORDINLINE(0xAA49);
  1353. extern pascal void RestoreEntries(CTabHandle srcTable, CTabHandle dstTable, ReqListRec *selection)
  1354.  ONEWORDINLINE(0xAA4A);
  1355. extern pascal short QDError(void)
  1356.  ONEWORDINLINE(0xAA40);
  1357. extern pascal void CopyDeepMask(const BitMap *srcBits, const BitMap *maskBits, const BitMap *dstBits, const Rect *srcRect, const Rect *maskRect, const Rect *dstRect, short mode, RgnHandle maskRgn)
  1358.  ONEWORDINLINE(0xAA51);
  1359. extern pascal void DeviceLoop(RgnHandle drawingRgn, DeviceLoopDrawingUPP drawingProc, long userData, DeviceLoopFlags flags)
  1360.  ONEWORDINLINE(0xABCA);
  1361.  
  1362. #if !GENERATINGCFM
  1363. #pragma parameter __A0 GetMaskTable
  1364. #endif
  1365. extern pascal Ptr GetMaskTable(void)
  1366.  ONEWORDINLINE(0xA836);
  1367. #if CGLUESUPPORTED
  1368. extern Boolean ptinrect(const Point *pt, const Rect *r);
  1369. extern void pt2rect(const Point *pt1, const Point *pt2, Rect *destRect);
  1370. extern void pttoangle(const Rect *r, const Point *pt, short *angle);
  1371. extern Boolean ptinrgn(const Point *pt, RgnHandle rgn);
  1372. extern void addpt(const Point *src, Point *dst);
  1373. extern void subpt(const Point *src, Point *dst);
  1374. extern Boolean equalpt(const Point *pt1, const Point *pt2);
  1375. extern void stuffhex(void *thingPtr, const char *s);
  1376. extern void stdline(const Point *newPt);
  1377. #endif
  1378. #if OLDROUTINENAMES
  1379. #define DisposPixMap(pm) DisposePixMap(pm)
  1380. #define DisposPixPat(pp) DisposePixPat(pp)
  1381. #define DisposCTable(cTable) DisposeCTable(cTable)
  1382. #define DisposCCursor(cCrsr) DisposeCCursor(cCrsr)
  1383. #if OLDROUTINELOCATIONS
  1384. #define DisposCIcon(theIcon) DisposeCIcon(theIcon)
  1385. #endif
  1386. #define DisposGDevice(gdh) DisposeGDevice(gdh)
  1387. #endif
  1388.  
  1389. #if PRAGMA_IMPORT_SUPPORTED
  1390. #pragma import off
  1391. #endif
  1392.  
  1393. #if PRAGMA_ALIGN_SUPPORTED
  1394. #pragma options align=reset
  1395. #endif
  1396.  
  1397. #ifdef __cplusplus
  1398. }
  1399. #endif
  1400.  
  1401. #endif /* __QUICKDRAW__ */
  1402.